/**
 * Logininterceptor.java
 * com.eova.interceptor
 * Copyright (c) 2016, 北京聚智未来科技有限公司版权所有.
 */

package com.eova.interceptor;

import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.alibaba.fastjson.JSON;
import com.eova.model.User;
import com.game.hall.model.WXGameUser;
import com.jfinal.aop.Invocation;

/**
 * TODO(这里用一句话描述这个类的作用)
 * <p>
 * TODO定义接口
 *
 * @author gyp
 * @Date 2016年12月8日
 * @Time 下午12:57:17
 */

public class MyInterceptor extends LoginInterceptor {

	private static ArrayList<String> urls = new ArrayList();
	static {
		urls.add("/toLogin");
		urls.add("/vcodeImg");
		urls.add("/doLogin");
		urls.add("/init");
		urls.add("/doInit");
		urls.add("/toTest");
		urls.add("/form");
		urls.add("/doForm");
		urls.add("/upgrade");

	}

	public void intercept(Invocation inv) {

		if (urls.contains(inv.getActionKey())) {
			inv.invoke();
			return;
		}
		// 接口的业务处理
		if (getStr(inv.getActionKey())) {// 对config中对应的/test

			// TODO 获取openId ----目前没有
			String userInfo = inv.getController().getPara("userInfo");
			if (null != userInfo) {
				WXGameUser wgu = JSON.parseObject(userInfo, WXGameUser.class);
				inv.getController().setSessionAttr("wxUser", wgu);
				inv.getController().setSessionAttr("nickName", wgu.getNickName());
			}

			inv.invoke();
			return;
		}

		User user = (User) inv.getController().getSessionAttr("user");

		// if (user == null) {
		// inv.getController().redirect("/toLogin");
		// return;
		// }

		inv.invoke();
	}

	public boolean getStr(String key) {

		Pattern pattern = Pattern.compile(".*?API.*?");
		Matcher matcher = pattern.matcher(key);
		System.out.println(matcher.matches());

		return matcher.matches();

	}
}
